// 可迭代对象
const iterableObj={
    names:["abc","cba","nba"],
    [Symbol.iterator]:function () {
        let index = 0
        return {
            // 要用箭头函数才能拿到names
            next:()=> {
                if(index < this.names.length){
                    return {done:false,value:this.names[index++]}
                }else{
                    return {done:true,value:undefined}
                }
            }
        }
    }
}

// iterableObj对象就是一个可迭代对象
console.log(iterableObj[Symbol.iterator])

const iterator = iterableObj[Symbol.iterator]()
console.log(iterator.next())

// 第二个可迭代对象
const iterator1 = iterableObj[Symbol.iterator]()
console.log(iterator1.next())

// 3.for ... of可以遍历的东西必须是一个可迭代对象

// 事实上我们平时创建的和多原生对象已经实现了可迭代协议，会生成一个迭代器对象
// String Array Map Set arguments对象 NodeList集合
//可以生成新的迭代器

